<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body>
    <script>
      function Animate(name) {
        this.name = name;
      }
      Animate.prototype.data = { name: "Animate" };
      const animate1 = new Animate("cat");
      const animate2 = new Animate("dog");
      /**
       * A. Animate.prototype.__proto__ === Function.prototype
       * B. Animate.prototype.__proto__ === Object.prototype
       * C. Object__proto__ === Function.prototype
       * D. Function.__proto__ === Object.prototype
       * E. animate1.__proto__ === animate2.__proto__
       * **/

      /**
       * 梳理一下知识点：
       * 1. Animate.prototype 代表的是 Animate 的原型对象，而所有的构造函数都是集成自 Object，所以 Animate.prototype.__proto__ = Object.prototype
       * **/
      /**
       * A. Animate.prototype.__proto__ === Object.prototype 而 不等于 Function.prototype 自己的原型空间
       * B. Animate.prototype.__proto__ === Object.prototype 是正确的
       * C. Object.__proto__  !== Object.prototype 而 所有的构造函数的 __proto__ 都是相等的，并且 Function.prototype 本身就是一个 Object.__proto__,所以正确
       * D. 小知识：Function.__proto__ === Function.prototype，说明 Function 的原型空间是一个 native code 函数，而 Object.prototype 是一个对象，所以不正确
       * E. 同一个构造函数的原型空间是相等的，所以正确
       *
       * 最终答案：BCE
       * **/
    </script>
  </body>
</html>
